package com.tomas.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.tomas.entity.Permission;
import com.tomas.entity.Role;
import com.tomas.entity.User;
import com.tomas.entity.User2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import javax.websocket.server.PathParam;

@RestController
public class PageController {

    // 从 application.properties 中读取配置，如取不到默认值为Hello Shanhy
    @Value("${application.hello}")
    private String hello = "Hello Shanhy";

    /**
     * 默认页<br/>
     * @RequestMapping("/") 和 @RequestMapping 是有区别的
     * 如果不写参数，则为全局默认页，加入输入404页面，也会自动访问到这个页面。
     * 如果加了参数“/”，则只认为是根页面。
     *
     * @return
     * @author SHANHY
     * @create  2016年1月5日
     */
    @RequestMapping(value = {"/","/index"})
    public String index(Map<String, Object> model){
        // 直接返回字符串，框架默认会去 spring.view.prefix 目录下的 （index拼接spring.view.suffix）页面
        // 本例为 /WEB-INF/jsp/index.jsp
        model.put("time", new Date());
        model.put("message", this.hello);
        return "index";
    }

    /**
     * 响应到JSP页面page1
     *
     * @return
     * @author SHANHY
     * @create  2016年1月5日
     */
    @RequestMapping("/page/{num}")

    public ModelAndView page1(@PathVariable Integer num ){
        // 页面位置 /WEB-INF/jsp/page/page.jsp
        System.out.println(num);
        ModelAndView mav = new ModelAndView("page/page1");
        mav.addObject("content", hello);
        return mav;
    }

    /**
     * 响应到JSP页面page1（可以直接使用Model封装内容，直接返回页面字符串）
     *
     * @return
     * @author SHANHY
     * @create  2016年1月5日
     */
    @RequestMapping("/page2")
    @ResponseBody
    public User page2(Model model){
        // 页面位置 /WEB-INF/jsp/page/page.jsp
        model.addAttribute("content", hello + "（第二种）");
        User user=new User();
        user.setId(1);
        user.setPassword("大黄");
        user.setUsername("你好");
        Role role=new Role();
        role.setId(2);
        role.setRolename("admin");
        Permission permission=new Permission();
        permission.setId(3);
        permission.setPermissionname("权限");
        List<Permission> permissions=new ArrayList<Permission>();
        permissions.add(permission);
        role.setPermissionList(permissions);
        //role.getPermissionsName("all");
        List<Role> roles=new ArrayList<Role>();
        roles.add(role);
        user.setRoleList(roles);
        return user;
    }
    @RequestMapping("/user2")
    @ResponseBody
    public User2 user2(Model model){
        model.addAttribute("content", hello + "（第二种）");
        User2 user=new User2();
        user.setId(1);
        user.setName("tomas");
        user.setPwd("pwd");
        return user;
    }
}